package com.func.trigger.api;

import com.func.trigger.api.dto.*;
import com.func.types.model.Response;

import java.util.List;

/**
 * @version 1.0
 * @className IRaffleService
 * @description 抽奖服务接口
 * @author: func
 * @date 2025/3/5 16:47
 */


public interface IRaffleStrategyService {
    /**
     * 策略装配接口
     * @param strategyId 策略ID
     * @return 装配结果
     */
    Response<Boolean> strategyArmory(Long strategyId);

    /**
     * 查询抽奖奖品列表
     * @param request 抽奖奖品列表查询请求参数
     * @return 奖品列表
     */
    Response<List<RaffleAwardListResponseDTO>> queryRaffleAwardList(RaffleAwardListRequestDTO request);

    /**
     * 随机抽奖接口
     * @param request 随机抽奖请求参数
     * @return 抽奖结果
     */
    Response<RaffleResponseDTO> randomRaffle(RaffleRequestDTO request);

    /**
     * 查询抽奖策略权重规则, 给用户展示出抽奖N次后必中的奖品范围
     * 返回是不同抽奖次数以后的奖池, 列表中的一个元素就是一个奖池
     * @param requestDTO 请求对象
     * @return 权重奖品配置列表, 这里会返回全部, 前端可按需展示一条已经达标的, 或者一条要达标的
     */
    Response<List<RaffleStrategyRuleWeightResponseDTO>> queryRaffleStrategyRuleWeight(RaffleStrategyRuleWeightRequestDTO requestDTO);

}
